﻿#define _CRT_SECURE_NO_WARNINGS 1s
#include <stdio.h>
int main()
{
	int arr[10] = { 11, 13, 18, 28, 39, 56, 69, 89, 98, 122 };
	int len = sizeof(arr) / sizeof(arr[0])-1;
	int n = 0;
	scanf("%d", &n);
	int sz = 0;
	int flag = 0;
	while (sz <= len)
	{
		flag = (sz+len) / 2;
		if (arr[flag] == n)
		{
			break;
		}
		else if (arr[flag] < n)
		{
			sz = flag + 1;
		}
		else if (arr[flag] > n)
		{
			len = flag - 1;
		}
	}
	printf("下标是%d", flag);
	return 0;
}





//#include <stdio.h>
//int main()
//{
//	int day = 0;
//	scanf("%d", &day);
//	int i = 0;
//	int a = 1;
//	int b = 1;
//	int c = 0;
//	if (day == 1 || day == 2)
//	{
//		printf("%d\n", a);
//	}
//	else
//	{
//		for (i = 2; i < day; i++)
//		{
//			c = a + b;
//			a = b;
//			b = c;
//		}
//		printf("%d\n", c);
//	}
//	return 0;
//}





//猴子吃桃问题：猴子第一天摘下若干个桃子，当即吃了一半，还不过瘾，又多吃了一个。第二天早上又将第一天剩下的桃子吃掉一半，有多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时，发现只剩下一个桃子了。编写程序求猴子第一天摘了多少个桃子。
//#include <stdio.h>
//int main()
//{
//	int a = 1;
//	int i = 0;
//	for (i = 0; i < 9; i++)
//	{
//		a = (a+1)*2;
//	}
//	printf("a=%d", a);
//	return 0;
//}





//C语言三个数从小到大排序 / 输出
//#include <stdio.h>
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	scanf("%d%d%d", &a, &b, &c);
//	int tmp = 0;
//	if (a > b)
//	{
//		tmp = a;
//		a = b;
//		b = tmp;
//	}
//	if (a > c)
//	{
//		tmp = a;
//		a = c;
//		c = tmp;
//	}
//	if (b > c)
//	{
//		tmp = b;
//		b = c;
//		c = tmp;
//	}
//	printf("a=%d b=%d c=%d\n", a, b, c);
//	return 0;
//}










/**有一个质数p，和两个区间\left [ a,b \right ][a,b]，\left [ c,d \right ][c,d]，分别在两个区间中取一个数x，y。求有多少对\left ( x,y\right )(x,y)使得x \ast yx∗y是p的倍数。给定你两个区间，求从区间中取出数相乘是p的倍数的个数。
* 返回两个区间内各取一个值相乘是p的倍数的个数
* @param a int整型 第一个区间的左边界
* @param b int整型 第一个区间的右边界
* @param c int整型 第二个区间的左边界
* @param d int整型 第二个区间的右边界
* @param p int整型 质数
* @return long长整型
*/
//long long numbers(int a, int b, int c, int d, int p) {
//	// write code here
//	long long time = 0, time1 = 0, strtime = 0, endtime = 0;
//	long long count = 0;
//	strtime = ((a%p) == 0) ? (a / p) : (a / p) + 1;
//	endtime = b / p;
//	time = endtime - strtime + 1;
//	strtime = ((c%p) == 0) ? (c / p) : (c / p) + 1;
//	endtime = d / p;
//	time1 = endtime - strtime + 1;
//	count = (time*(d - c + 1)) + (time1*(b - a + 1)) - (time*time1);
//	return count;
//}
//
//
//
//
//
//
///**
//*有一个没有重复元素的数组a，想要将数组内第n大的数字和第m大的数(从大到小排序)交换位置。给定一个数组a，求交换第n大和第m大元素后的数组。
//* @param a int整型一维数组 原始数组a
//* @param aLen int a数组长度
//* @param n int整型 第n大
//* @param m int整型 第m大
//* @return int整型一维数组
//* @return int* returnSize 返回数组行数
//*/
//int* sovle(int* a, int aLen, int n, int m, int* returnSize)
//{
//	// write code here
//	int a1[1000] = { 0 };
//	memcpy(a1, a, aLen*sizeof(int));
//	int i = 0;
//	int j = 0;
//	int tmp = 0;
//	for (i = 0; i<aLen - 1; i++)
//	{
//		for (j = i + 1; j<aLen; j++)
//		{
//			if (a1[i]<a1[j])
//			{
//				tmp = a1[i];
//				a1[i] = a1[j];
//				a1[j] = tmp;
//			}
//		}
//	}
//	for (i = 0; i<aLen; i++)
//	{
//		if (a[i] == a1[m - 1])
//		{
//			a[i] = a1[n - 1];
//		}
//		else if (a[i] == a1[n - 1])
//		{
//			a[i] = a1[m - 1];
//		}
//	}
//	*returnSize = aLen;
//	return a;
//}